学术报告 | 郑纬民院士:人工智能算力基础设施的设计、评测与优化
2022年10月22日,在教育部科学技术与信息化司、国家自然科学基金委信息学部和中国工程院信息与电子工程学部指导下,由中国人工智能学会主办,中国人工智能学会教育工作委员会承办,上海人工智能实验室,浙江大学中国科教战略研究院,上海浙江大学高等研究院,北京工业大学北京人工智能研究院,浙江大学人工智能协同创新中心,华为,科大讯飞作为支持单位举办的“智行中国”系列论坛启动仪式暨第一期“迈向教育科学研究新范式”线上论坛成功举办。
郑纬民院士应邀做了《人工智能算力基础设施的设计、评测与优化》报告。报告从“AI+系统”的角度,对AI三驾马车之一的算力研究现状和未来发展做了思考。报告内容分成五个主要的部分,包括AI算力及其基础设施的重要性、AI算力基础设施的架构设计、AI算力评测方法和优化等,并通过百万亿参数超大规模预训练模型加速给出了实际的例子,同时分享了如何培养系统人才的经验和成果。最后指出,人工智能算力是当前人工智能领域发展的关键,需要加快AI基础设施的构建以及系统方面人才的培养。
为了深入贯彻教育、科研和人才三位一体的新理念,为了促进学术交流,征得郑纬民院士同意,现将郑纬民院士报告中关键ppt内容发布,以便共同思考人工智能算力基础设施赋能社会发展以及培养相应一流创新人才。
“智行中国”系列论坛第一期摘要视频
郑纬民院士的《人工智能算力基础设施的设计、评测与优化》视频报告
郑纬民院士
中国工程院院士,清华大学计算机系教授。长期从事高性能计算机体系结构、并行算法和系统研究。在高性能存储系统领域,提出可扩展的存储系统结构及轻量并行的扩展机制,发展了存储系统扩展性理论与方法,率先研制出具有自主知识产权的国产网络存储系统;提出高容错纠删码轻量编码方法及数据快速自愈模型,拓展了存储可靠性的技术思路。在高性能计算机体系结构领域,在国内率先研制并成功应用集群架构高性能计算机。在大规模并行算法与应用方面,在国产神威太湖之光上研制的极大规模天气预报应用获得ACM在计算扩展性方面的Gordon Bell奖。曾获国家科技进步一等奖1项、二等奖2项、国家技术发明二等奖1项,何梁何利科技进步奖,获得首届中国存储终身成就奖。
第一部分:AI 算力基础设施的重要性
本章将从中美科技竞争的大背景出发,结合AI算力在现实社会中的应用,来阐述AI算力基础设施的重要性。
目前,人工智能(AI)是中美科技竞争的重要领域。2020年4月,国家发改委明确将人工智能纳入新基建范围,AI是新基建之一。而在2019年2月,美国发布了《维护美国人工智能领导力的行政命令》(Execution Order On Maintaining American Leadership in Artificial Intelligence),此命令代表了美国国家AI战略的里程碑。而在次年10月份,美国国家AI安全委员会又指出:“必须不惜一切代价在AI上击败中国”。可见,AI对于中美未来综合国力的竞争是非常重要的。此外,从图1中我们可以看到中美两国目前在人工智能领域的优势对比:
图1
我们知道AI技术有三驾马车,算法、数据、算力。其中中国在大数据领域处于优势地位。然而,在算法和智能算力领域,中国落后于美国。智能算力的不足严重制约了我国在AI领域的创新能力。我们可以看到,智能AI算力在中美科技竞争中占据非常重要的战略地位。
那么AI算力究竟为何如此重要呢?除去前面提及的中美竞争的大背景,AI算力对于我国经济建设、科技建设都有着非常积极的意义。
首先,算力即生产力,算力能够推动经济发展方式变革。据埃森哲和经济学前沿公司分析,预计到2035年,AI将推动我国GDP增长21%,如图2所示。由此可见,算力将会智能经济的发动机。
图2
其次,AI算力正在改变基础科学和智能领域的创新模式。比如,AlphaFold2解决了结构生物学50年的难题。AI+HPC将高能物理计算加速数百倍。如图3所示。
图3
AI在各种各样的实际场景中都有相关的应用。比如以卷积网络为核心的图像检测,视频检索技术可应用于下游的安防、医疗诊断、自动驾驶等场景;以强化学习为基础的博弈决策技术,可应用于交通规划等领域;以Transformer为核心的自然语言处理技术,可以应用于搜索推荐、智能人机接口等场景。其中最典型的自然语言处理模型,比如GPT-1,GPT-2,GPT-3,BERT的发展非常迅速,模型规模从几亿到几千亿再到几万亿参数。以上一切技术都需要AI算力来提供支持。
综上所述,AI算力影响了我们社会的方方面面,因此,构建AI算力的基础设施非常的重要。
第二部分:AI 算力基础设施的架构和平衡设计
AI算力非常重要,对AI算力基础设施的架构来进行设计,是提升AI算力的第一步。本章将首先介绍现有HPC算力体系与AI算力需求的区别,从而论述构建AI算力体系的必要性。然后本章将分析设计构建AI算力体系需要的技术要素,最后将提出设计AI算力系统遵循的系统平衡性原则。
现有算力体系比如超算系统主要针对的是HPC的应用,而AI和HPC存在着一些区别。比如HPC主要应用于科学和工程计算,像天气预报,核聚变模拟,飞行器设计等,而AI主要用于分类,回归,自然语言处理,下游任务主要是安防,互联网搜索推荐,金融风控,智能制造;从运算精度角度来说,HPC主要为双精度浮点运算,而AI主要为半精度浮点运算或者低精度整数运算;从编程角度来看,HPC主要是基于MPI来做并行计算,而AI基于Pytorch,TensorFlow, MindSpore,Oneflow,DeepSpeed等机器学习框架;最后,HPC的性能指标主要是HPL,HPCG,而AI的性能指标是MLPerf,AIPerf。传统超算系统对于AI系统的支持性不佳。
因此,需要针对AI的特性,来设计新的超算系统。
目前代表性的HPC和AI系统主要有以下几个:
表1
图4
其中,鹏城云脑2是新一代AIHPC系统,如图4所示。
系统包含,4套华为Atlas900系统,4套系统节点间用200Gbps网络互连。鹏城云脑的总半精度计算性能可达1Eflops,双精度可达1Pflops。
那么设计AI系统的系统结构要素有哪些呢?我们先来看一下一般大规模计算机系统中是什么样的:
图5
具体地,AI算力系统和传统HPC系统在各个要素上存在一些联系和区别,如下表中的总结:
结合以上分析,在设计新型AI系统时,郑纬民院士团队提出了系统平衡性原则。
1、计算平衡设计
• 鹏城云脑Ⅱ原有设计中主要考虑半精度运算性能,双精度运算能力过低,双精度与半精度运算性能之比为1:1000
• 根据科学计算和大模型训练的发展趋势,提出了变精度平衡设计的思想
• 建议增加通用算力,为云脑适应科学计算和更广泛的AI算法和应用提供了保障
2、网络平衡设计
• 云脑Ⅱ原有网络设计主要针对CNN等算法,未考虑极大规模预训练模型对系统的需求
• 原有数据平面网络的顶层网络裁剪比为1:4,对训练数据读取和大规模科学计算支撑不足
• 建议数据平面顶层网络裁剪比改进为1:1,华为相应修改了网络连接方式,并增加了顶层交换机,为IO500测试多次世界第一打下了基础
3、IO子系统平衡设计
• 云脑Ⅱ原有系统的本地NVME SSD仅通过本地文件系统访问,限制了其应用范围
• 提出将每台服务器上的快速本地NVME整合成应用可见的全局分布式文件系统并开发了高性能MADFS并行文件系统,在多次IO500测试中获得世界第一
现在,20多个城市陆续启动人工智能计算中心建设,让算力无处不在、触手可及!
图6
第三部分:AI 算力的评测方法
前面介绍了AI算力基础设施的设计,除此之外,AI算力的评测(AIPerf)也是非常重要的。本章将介绍AIPerf的重要性,并分析现有AIPerf的不足。然后为了解决现有的问题,提出需要实现的目标。为了实现目标,本章介绍如何设计完善的AIPerf机制的流程。最后介绍了ChinaSC中所作的AIPerf的工作。
为什么需要AI算力评测呢?首先,公众需要一个评价指标来回答:哪套系统的人工智能算力更强?其次,我们需要知道,整个领域的发展状况如何?显然,一个好的指标能够引领领域的健康发展。
然而传统高性能计算机的测试结果与人工智能需要的性能不完全一致。正如前面所讲过的,HPC和AI主要采用的数据精度不同。那么我们就需要针对AI来设计基准评测程序。
而现有AI基准评测,面临以下几个问题:DeepBench测试底层人工智能芯片计算的效率,不能反映超大规模系统性能,针对单个芯片,不适用于整机评测;Mobile AI Bench针对移动端硬件上的模型训练评测,无法体现超算对大规模AI应用的性能;MLPerf,采用单一人工智能网络模型,百张加速卡以上规模测试下可扩展性明显下滑,难以支撑在千卡以上级别的系统评测。
为了克服AI基准评测的问题,我们需要实现以下四个目标:
1、一个统一分数。AIPerf需要能够报告一个统一分数作为被评测集群系统的评价指标。AIPerf目前的评价指标是AIops,即平均每秒处理的混合精度AI操作数。使用一个而不是多个分数能方便进行不同机器的横向比较,以及方便公众的宣传
2、可变的问题规模。人工智能计算集群往往有着不同的系统规模,差异性体现在结点数量,加速器数量,加速器类型,内存大小等指标。因此,为了适应各种规模的高性能计算集群,AIPerf 能够使用AutoML进行问题规模的变化来适应集群规模的变化,从而充分利用人工智能计算集群的计算资源来体现其算力。
3、具有实际的人工智能意义。具有人工智能意义的计算,例如神经网络运算,是人工智能基准测试程序相较于传统高性能计算机基准测试程序的重要区别,也是能够检测集群人工智能算力的核心所在。目前,AIPerf在ImageNet数据集上训练神经网络来运行计算机视觉应用程序。在将来,AIPerf计划将自然语言处理等其他人工智能任务加入评测范围。
4、评测程序包含必要的多机通信。网络通信是人工智能计算集群设计主要指标之一,也是其庞大计算能力的重要组成部分。作为面向高性能计算集群的人工智能基准测试程序,AIPerf包括必要的多机通信,如任务的分发、结果的收集与多机训练,从而将网络通信性能作为最终性能的影响因素之一。
为了实现以上目标,我们需要设计完善的AIPerf机制。
目前AIPerf主要流程包含5个步骤,如图7所示:
1、主节点持续分配计算任务(包含历史信息)
2、计算节点根据历史信息生成新的神经网络训练模型
3、计算节点调用后端深度学习框架(MindSpore、Keras、Tensorflow)训练神经网络
4、新模型训练完成后,工作节点返回新模型及其精度;主节点更新历史信息
5、计算任务异步执行
图7
2020年11月15日,以“新算力,新基建,新经济”为主题的第二届中国超级算力大会ChinaSC在北京隆重举行。大会上,基于AIPerf大规模人工智能算力基准评测程序的国际人工智能性能算力排行榜首次发布。深圳鹏城实验室研制的基于ARM架构和华为加速处理器的鹏城云脑Ⅱ主机以194,527 Tops的AIPerf算力荣登榜首。其性能是排名第二的联泰集群Nvidia系统性能的12倍以上。
图8
图9
表3
第四部分:百万亿参数超大预训练模型的训练
本章以从百万亿参数超大预训练模型的训练为例,具体谈一谈如何设计、构建、测试和优化AI算力基础设施。
当前,学术界形成了共识:模型规模与模型效果呈现正相关关系
图10
如图10所示,模型参数达到千亿的大模型,已经能在美国SAT考试题目中,实现60%左右的正确率。
表4
而表4所示,现有语言大模型已经达到了万亿甚至百万亿的规模。
因此,探索更大参数量模型的效果具有重要科学意义!
预训练模型的计算结构的核心是Transformer模型,模型的计算主要集中在:嵌入层(Embedding)、注意力层 (Attention)、前馈网络 (FFN)。如图11所示:
图11
Transformer的计算核心为矩阵乘法,因此我们可以利用并行训练技术来加速训练。随着模型规模扩大,训练数据增多,单机训练无法满足参数规模和数据吞吐的需求并行训练成为大模型的训练"标配"。如图12所示。
图12
比如在国产的新一代神威高性能计算机中,包含了96000个节点、37440000个核心以及互连网络。神威采用的是新一代体系结构芯片--神威26010pro,以及支持MPI通信的国产自主高速网络,如图13所示。神威超级计算机契合了大规模预训练模型的需求,如表 所示。
图13
表5
郑纬民院士团队在国产E级高性能计算机上训练了一个170万亿参数的超大规模预训练模型,模型参数与人脑中的突触数量相媲美。
在训练这一超大规模预训练模型中四个关键系统挑战:1、如何选取高效并行策略,2、如何进行高效数据存储,3、如何选取合适数据精度,4、如何实现动态负载均衡。
挑战1:如何选取高效并行策略
不同的并行策略的通信需求和计算模式不同,比如数据并行、模型并行、流水并行、MoE并行。底层不同的网络拓扑结构会对性能有很大影响。如何选择合适的并行策略组合非常挑战。
图14
挑战2:如何进行高效数据存储
以万亿参数的模型为例,如果模型精度是32位,模型的参数就有4T,模型的梯度也有4T,优化器的更新参数有8T,计算中间值也有8T。如果用V100训练这个模型,并且把这些数据存储下来,就需要768块V100。那么这些数据如何划分?不同的划分方式对底层的计算和通信也会产生不同的影响,即高效存储相关数据来支持高效训练非常有挑战。
挑战3:如何选取合适数据精度
选择合适的数据精度能够有效提高计算性能,降低内存占用。
越低精度选取,性能越好,但模型准确度越差,如何选择最优的混合精度策略非常有挑战。
图15
挑战4:如何实现动态负载均衡
MoE训练中,样本通过网关 (gate) 选取合适专家进行计算,存在负载不均衡问题,影响计算性能,受欢迎的专家会收到几百倍甚至上千倍的输入数据。
图16
针对上述挑战,郑纬民院士团队提出相应的解决方案,实现在国产系统的高效并行训练--八卦炉:百万级预训练模型系统。
表6
在上面的基础上,郑纬民院士团队同时完善神威高性能计算机的基础软件库:
实现高效算子库:完善 swTensor,支持混合精度算子
优化深度学习框架:深度优化 swPyTorch、优化内存分配器等
支持复杂模型:实现分层混合精度策略、支持负载均衡方法
郑纬民院士团队训练来自阿里巴巴的图文数据集M6-Corpus,数据集总规模约2TB,包含科学、体育、政治、经济等各方面,如表7所示。
表7
性能结果:
图17
郑纬民院士团队将工作开源成相应的分布式系统FASTMOE。
图18
第五部分:如何培养系统人才
算力非常重要,会使用算力的人才同样非常重要。那么如何培养系统人才呢?对此,本章介绍了四个方面的建议:1.学好课程,2.阅读优秀的开源代码和相关的论文,3.动手参加系统类竞赛实践,4.参加科研项目。
1. 学好课程
1)两门理解计算机系统基本原理的基础课程
1.CMU (15-213):Introduction to Computer Systems
教材:Introduction to Computer Systems, A Programmer’s Perspective
中文版:深入理解计算机系统(其实只能算简单理解)
介绍了程序表示,编译链接,内存层次,内存分配等基础知识,其中的实验都很精华
2.MIT(6.003):Computer System Engineering
教材:Principles of Computer System Design
介绍了计算机系统设计的复杂性,抽象、模块化等基本原理,主要以概念为主,实验比较简单
2)两门构建操作系统和分布式系统模块的进阶课程
1.MIT(6.828):Operating System Engineering
学习一个类似Unix的代码 (xv6)
实验:构建一个小操作系统(JOS)包括启动,内存管理,用户环境,抢占式多任务,文件系统, 网络驱动等
2.MIT(6.824):Distributed Systems
RPC,分布式一致性协议(Raft/Paxos), 分布式事务,并发控制
实验:实现MapReduce系统,分布式、可容错的KV存储系统等
3)根据自己感兴趣的方向,学习相关课程
2.阅读优秀的开源代码和相关的论文
1).学习新的系统构建语言
现代C++,Rust,Go,Scala等
2).阅读优秀的开源代码
能为一些开源项目贡献代码
重复造一些轮子
3).阅读相关的论文确定感兴趣的方向
阅读相关的论文(SOSP,OSDI,Usenix ATC, EuroSys,SoCC等)
确定要做的系统
3.动手实践举例——系统类竞赛
1.国际大学生超算竞赛
形式:5-6人组队参加
任务:自行设计搭建计算集群(或使用云计算集群),对于给定的应用进行测试和优化
还包含面试、海报、论文复现、口头报告等环节,使用英语作为工作语言
三大比赛:ASC、ISC、SC
图19
2. “英特尔杯”全国并行应用挑战赛
3.CCF CCSP 大学生计算机系统与程序设计竞赛
形式:个人参赛,通过 CCF CSP 能力认证入围
任务:算法题与系统题
特点:12小时5题;系统题的得分与选手程序的运行时间相关,性能最高的取得满分
4.参加科研项目
“MadFS分布式文件系统”
“千万核可扩展全球大气动力学全隐式模拟”
“非线性大地震模拟”
“神图”图计算框架
小结
人工智能算力是当前人工智能领域发展的关键。郑纬民院士团队最近几年在AI算力基础设施的架构平衡设计,AI算力的评测方法,百万亿参数超大预训练模型的并行加速都做出了非常大的共享。最后,郑纬民院士提出我们需要加快AI算力基础设施的构建以及加快系统方面人才的培养。
附录:清华在相关领域的成果
如果你在看这篇文章,
别忘了点击「在看+点赞」哦!
👇